const path = require('path')
const template = require('art-template')
const url = require('url')

module.exports = (options) => {
    // 解构赋值出当前页、总页数
    const {page,totalPage} = options

    // 重新生成url
    const getURL = page => {
        const urlObj = url.parse(options.req.url,true)
        urlObj.query.page = page
        urlObj.search = undefined

        return url.format(urlObj)
    }

    // 每页显示的分页按钮个数
    const btnNum = options.btnNum || 5

    // 计算分页条的起始位置
    // 举例 一共10页 当前页第5页 3 4 5 6 7
    // 举例 一共10页 当前页第9页 7 8 9 10 11 ==> 6 7 8 9 10
    // 举例 一共4页 当前页第2页 0 1 2 3 4 ==> 1 2 3 4 5
    
    // 开始位置
    let start = page - Math.floor(btnNum/2)
    start = start < 1 ? 1 : start

    // 结束位置 例如 3+5-1
    let end = start + btnNum - 1

    // 判断结束位置
    end = end > totalPage ? totalPage : end

    // 重置开始位置
    start = end - btnNum + 1
    start = start < 1 ? 1 : start

    // 开始渲染分页组件
    const templateURL = path.join(__dirname,"../views/components/pagination")
    return template(templateURL,{page,totalPage,start,end,getURL,query:options.req.query})
}